package com.ffcs.crmd.tsp.server.config;

import com.ffcs.crmd.tsp.core.util.MixAll;

/**
 * 
 * 功能说明:调度任务配置
 *
 * @author FFCS-ZHONGFUHUA
 * 
 * @since 1.0.0-SNAPSHOT
 *
 */
public class SchedulerConfig {
    
    /**
     * tsp根目录
     */
    private String tspHome                     = System.getProperty(MixAll.TSP_HOME_PROPERTY, System.getenv(MixAll.TSP_HOME_ENV));
    
    /**
     * 单次取出待执行任务的批量数量
     */
    private int    takeJobDetailBatch          = 128;
    
    /**
     * 多少个线程取待执行的任务
     */
    private int    takeJobDetailThreadNum      = 1;
    
    /**
     * 异步调用通信超时时间
     */
    private long   asyncTimeout                = 3000;
    
    /**
     * 定时扫描待执行任务
     */
    private long   timerScanJobDetail          = 5;
    
    /**
     * 定时扫描超时任务
     */
    private long   timerScanJobDetailTimeout   = 30 * 1000;
    
    /**
     * 定时扫描死任务
     */
    private long   timerScanJobDetailDeath     = 30 * 1000;
    
    /**
     * 定时更新任务配置信息
     */
    private long   timerUpdateJobConfig        = 15 * 1000;
    
    /**
     * 定时更新执行端配置信息
     */
    private long   timerUpdateTaskConfig       = 30 * 1000;
    
    /**
     * 定时把重投的任务放置到待运行的队列中
     */
    private long   timerFlushJobDetailRetry    = 30 * 1000;
    
    /**
     * 是否打开默认输出日志
     */
    private String isOpenDefaultLog            = "false";
    
    /**
     * 选择发送子任务策略
     */
    private String sendJobDetailSelectStrategy = "REBALANCE";
    
    /**
     * 功能说明: 获取tsp根目录
     *
     * @return tspHome tsp根目录
     */
    public String getTspHome() {
        return tspHome;
    }
    
    /**
     * 功能说明: 设置tsp根目录
     *
     * @param tspHome tsp根目录
     */
    public void setTspHome(String tspHome) {
        this.tspHome = tspHome;
    }
    
    /**
     * 功能说明: 获取定时扫描待执行任务
     *
     * @return timerScanJobDetail 定时扫描待执行任务
     */
    public long getTimerScanJobDetail() {
        return timerScanJobDetail;
    }
    
    /**
     * 功能说明: 设置定时扫描待执行任务
     *
     * @param timerScanJobDetail 定时扫描待执行任务
     */
    public void setTimerScanJobDetail(long timerScanJobDetail) {
        this.timerScanJobDetail = timerScanJobDetail;
    }
    
    /**
     * 功能说明: 获取单次取出任务执行的批量数量
     *
     * @return takeJobDetailBatch 单次取出任务执行的批量数量
     */
    public int getTakeJobDetailBatch() {
        return takeJobDetailBatch;
    }
    
    /**
     * 功能说明: 设置单次取出任务执行的批量数量
     *
     * @param takeJobDetailBatch 单次取出任务执行的批量数量
     */
    public void setTakeJobDetailBatch(int takeJobDetailBatch) {
        this.takeJobDetailBatch = takeJobDetailBatch;
    }
    
    /**
     * 功能说明: 获取异步调用通信超时时间
     *
     * @return asyncTimeout 异步调用通信超时时间
     */
    public long getAsyncTimeout() {
        return asyncTimeout;
    }
    
    /**
     * 功能说明: 设置异步调用通信超时时间
     *
     * @param asyncTimeout 异步调用通信超时时间
     */
    public void setAsyncTimeout(long asyncTimeout) {
        this.asyncTimeout = asyncTimeout;
    }
    
    /**
     * 功能说明: 获取定时扫描超时任务
     *
     * @return timerScanJobDetailTimeout 定时扫描超时任务
     */
    public long getTimerScanJobDetailTimeout() {
        return timerScanJobDetailTimeout;
    }
    
    /**
     * 功能说明: 设置定时扫描超时任务
     *
     * @param timerScanJobDetailTimeout 定时扫描超时任务
     */
    public void setTimerScanJobDetailTimeout(long timerScanJobDetailTimeout) {
        this.timerScanJobDetailTimeout = timerScanJobDetailTimeout;
    }
    
    /**
     * 功能说明: 获取定时扫描死任务
     *
     * @return timerScanJobDetailDeath 定时扫描死任务
     */
    public long getTimerScanJobDetailDeath() {
        return timerScanJobDetailDeath;
    }
    
    /**
     * 功能说明: 设置定时扫描死任务
     *
     * @param timerScanJobDetailDeath 定时扫描死任务
     */
    public void setTimerScanJobDetailDeath(long timerScanJobDetailDeath) {
        this.timerScanJobDetailDeath = timerScanJobDetailDeath;
    }
    
    /**
     * 功能说明: 获取定时更新执行端关联任务信息
     *
     * @return timerUpdateTaskRelJobInfo 定时更新执行端关联任务信息
     */
    public long getTimerUpdateJobConfig() {
        return timerUpdateJobConfig;
    }
    
    /**
     * 功能说明: 设置定时更新执行端关联任务信息
     *
     * @param timerUpdateTaskRelJobInfo 定时更新执行端关联任务信息
     */
    public void setTimerUpdateJobConfig(long timerUpdateTaskRelJobInfo) {
        this.timerUpdateJobConfig = timerUpdateTaskRelJobInfo;
    }
    
    /**
     * 功能说明: 获取定时把重投的任务放置到待运行的队列中
     *
     * @return timerFlushJobDetailRetry 定时把重投的任务放置到待运行的队列中
     */
    public long getTimerFlushJobDetailRetry() {
        return timerFlushJobDetailRetry;
    }
    
    /**
     * 功能说明: 设置定时把重投的任务放置到待运行的队列中
     *
     * @param timerFlushJobDetailRetry 定时把重投的任务放置到待运行的队列中
     */
    public void setTimerFlushJobDetailRetry(long timerFlushJobDetailRetry) {
        this.timerFlushJobDetailRetry = timerFlushJobDetailRetry;
    }
    
    /**
     * 功能说明: 获取是否打开默认输出日志
     *
     * @return isOpenDefaultLog 是否打开默认输出日志
     */
    public String getIsOpenDefaultLog() {
        return isOpenDefaultLog;
    }
    
    /**
     * 功能说明: 设置是否打开默认输出日志
     *
     * @param isOpenDefaultLog 是否打开默认输出日志
     */
    public void setIsOpenDefaultLog(String isOpenDefaultLog) {
        this.isOpenDefaultLog = isOpenDefaultLog;
    }
    
    /**
     * 功能说明: 获取选择发送子任务策略
     *
     * @return sendJobDetailSelectStrategy 选择发送子任务策略
     */
    public String getSendJobDetailSelectStrategy() {
        return sendJobDetailSelectStrategy;
    }
    
    /**
     * 功能说明: 设置选择发送子任务策略
     *
     * @param sendJobDetailSelectStrategy 选择发送子任务策略
     */
    public void setSendJobDetailSelectStrategy(String sendJobDetailSelectStrategy) {
        this.sendJobDetailSelectStrategy = sendJobDetailSelectStrategy;
    }
    
    /**
     * 功能说明: 获取takeJobDetailThreadNum
     *
     * @return takeJobDetailThreadNum takeJobDetailThreadNum
     */
    public int getTakeJobDetailThreadNum() {
        return takeJobDetailThreadNum;
    }
    
    /**
     * 功能说明: 设置takeJobDetailThreadNum
     *
     * @param takeJobDetailThreadNum takeJobDetailThreadNum
     */
    public void setTakeJobDetailThreadNum(int takeJobDetailThreadNum) {
        this.takeJobDetailThreadNum = takeJobDetailThreadNum;
    }
    
    /**
     * 功能说明: 获取定时更新执行端配置信息
     *
     * @return timerUpdateTaskConfig 定时更新执行端配置信息
     */
    public long getTimerUpdateTaskConfig() {
        return timerUpdateTaskConfig;
    }
    
    /**
     * 功能说明: 设置定时更新执行端配置信息
     *
     * @param timerUpdateTaskConfig 定时更新执行端配置信息 
     */
    public void setTimerUpdateTaskConfig(long timerUpdateTaskConfig) {
        this.timerUpdateTaskConfig = timerUpdateTaskConfig;
    }
    
}
